One type of prior nonvolatile semiconductor memory is the flash electrically erasable programmable read-only memory ("flash memory"). A flash memory can be programmed by a user, and once programmed, the flash memory retains its data until erased.
Flash memory cells are typically programmed using channel-hot-electron injection and erased by applying a high voltage to the cell's source junction. Erasure algorithms typically apply erases pulses to the entire array until the slowest erasing cell erases below the maximum threshold voltage acceptable. Cells erased below a minimum acceptable threshold are commonly referred to as being overerased. Overerased cells may induce a leakage current on their associated bit lines, thereby causing errors when reading other cells on the same bit line.
Manufactures of flash memories have attempted to minimize the incidence of cell overerasure using a variety of techniques. Integrated circuit process optimization and manufacturing quality control are typically employed. The complete elimination of overerasure using these methods is unlikely, however.
Sensitivity of a flash memory to overerasure can be minimized by optimizing read sensing schemes. Optimized read sensing schemes suffer from two disadvantages. First, they cannot eliminate overerasure. Second, they require trade-offs in terms of speed and performance.
Flash manufactures have also attempted to eliminate overerasure by testing memories and either by replacing defective cells with redundant elements or by simply discarding the memory.
Manufacturer testing has a number of disadvantages, however. First, fabrication of redundant elements adds cost, complexity, and read-speed delays to flash memories. Second, flash memories containing more defective cells than redundant elements must be discarded. Finally, manufacturer testing does not guarantee that cells that erase normally during test will not become defective after repeated program-erase cycles.
Error correction codes, such as Hamming-code schemes, are also employed to eliminate errors caused by overerasure. Unfortunately, the use of error correction codes typically requires adding extra memory cells to the flash memory, thereby increasing cost.